/**
 * Created by ly-wangweiq on 2015/7/29.
 * * support mobile
 */
    //用户位置定位   使用geolocation定位
var mMap=function(){
        function rad(d){
            return d*Math.PI/180.0;
        }
        this.map={},
            this.geolocation={},
            this.k=0,
            //加载地图，调用浏览器定位服务
            this.initMap=function(mapContainer,completFunc){
                if(typeof(AMap)=="object"){
                    this.map = new AMap.Map(mapContainer, {
                        resizeEnable: true
                    });
                    this.map.plugin('AMap.Geolocation', function () {
                        this.geolocation = new AMap.Geolocation({
                            enableHighAccuracy: true,//是否使用高精度定位，默认:true
                            timeout: 10000,          //超过10秒后停止定位，默认：无穷大
                            maximumAge: 0,           //定位结果缓存0毫秒，默认：0
                            convert: true,           //自动偏移坐标，偏移后的坐标为高德坐标，默认：true
                            showButton: true,        //显示定位按钮，默认：true
                            buttonPosition: 'LB',    //定位按钮停靠位置，默认：'LB'，左下角
                            buttonOffset: new AMap.Pixel(10, 20),//定位按钮与设置的停靠位置的偏移量，默认：Pixel(10, 20)
                            showMarker: true,        //定位成功后在定位到的位置显示点标记，默认：true
                            showCircle: true,        //定位成功后用圆圈表示定位精度范围，默认：true
                            panToLocation: true,     //定位成功后将定位到的位置作为地图中心点，默认：true
                            zoomToAccuracy:true      //定位成功后调整地图视野范围使定位位置及精度范围视野内可见，默认：false
                        });
                        this.map.addControl(this.geolocation);
                        AMap.event.addListener(this.geolocation, 'complete', onComplete);//返回定位信息
                        AMap.event.addListener(this.geolocation, 'error', onError);      //返回定位出错信息
                    });
                    function onComplete(data){
                        console.log(completFunc)
                        console.log(data)
                        if(completFunc){
                            completFunc(data);
                        }
                    }
                    function onError(){
                        var str = '定位失败,';
                        str += '错误信息：'
                        switch(data.info) {
                            case 'PERMISSION_DENIED':
                                str += '浏览器阻止了定位操作';
                                break;
                            case 'POSITION_UNAVAILBLE':
                                str += '无法获得当前位置';
                                break;
                            case 'TIMEOUT':
                                str += '定位超时';
                                break;
                            default:
                                str += '未知错误';
                                break;
                        }
                        alert(str)
                    }
                }

            },
            this.getCurrentPosition=function(callback){
                if(typeof(this.geolocation.getCurrentPosition)!='undefined'){
                    this.geolocation.getCurrentPosition();
                }else{
                    setTimeout(function(){
                        //将获得的经纬度信息，放入sessionStorge
                        this.getSessionLocation(callback)
                    },200)
                }

            },

            this.distance = function(obj1,obj2){//return：m
                var lng=new AMap.LngLat(obj1.lng, obj1.lat);
                var lag=new AMap.LngLat(obj2.lng, obj2.lat);
                var ss=lng.distance(lag);
                return ss;
            },
            this.getSessionLocation=function(callback){
                if(sessionStorage.getItem('location')){
                    callback();
                }else{
                    this.initMap('',function(data){
                        sessionStorage.setItem("location",JSON.stringify(data))
                        callback();
                    });
                    this.getCurrentPosition(callback);
                }
            },
            /*
             *两点之间的距离
           *（lng1.lat1）地址一的经纬度
           *（lng2.lat2）地址一的经纬度
           *单位米
        */
            this.serverDistance = function(obj1,obj2){//return：m
                var radLat1 = rad(obj1.lat);
                var radLat2 = rad(obj2.lat);
                var a = radLat1 - radLat2;
                var b = rad(obj1.lng)- rad(obj2.lng);
                var s =  2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) + Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2)));
                s = s *6378137;
                s = Math.round(s * 10000)/10000 ;
                return s;
            }
        return this;
    }();